import numpy as np


def get_random_position(low=(0.1, 0.1), high=(0.9, 0.9)):
    """
    随机获取一个坐标点
    :param low: x,y的最小值
    :param high: x,y的最大值
    :return: 坐标点
    """
    x = np.random.uniform(low[0], high[0])
    y = np.random.uniform(low[1], high[1])
    return x, y


def get_target_range_position(target, range):
    """
    获取目标点一定范围内的随机位置
    :param target: 目标点坐标
    :param range: 圆形范围半径
    :return: 范围内的随机点坐标
    """
    low = (target[0] - range, target[1] - range)
    high = (target[0] + range, target[1] + range)
    low = np.clip(np.array(low), 0.1, 0.9)
    high = np.clip(np.array(high), 0.1, 0.9)
    return get_random_position(low, high)


def get_random_target_range_position(target, ranges, prob):
    """
    按给定范围及概率，获取目标点一定范围内的随机位置
    :param target: 目标点坐标
    :param ranges: 所有的范围
    :param prob: 范围对应的概率
    :return: 范围内的随机点坐标
    """
    range = np.random.choice(ranges, 1, prob)
    return get_target_range_position(target, range)
